#pragma once
#include "HomoPoint.h"
#include "GL/glut.h"
#include "GL/gl.h"
#include "GL/glu.h"


#define SMALL_NUM (2.5e-8)

const GLfloat black[] = {0.0, 0.0, 0.0};
const GLfloat red[]={ 1.0,0.0,0.0,1.0};
const GLfloat blue[]={ 0.0,0.0,1.0,1.0};

class CGeometricObject
{
public:
	CGeometricObject(void);
	~CGeometricObject(void);
	virtual void Draw() = 0;
	void setBegin(CPoint3D);
	CPoint3D* getBegin();
	void setEnd(CPoint3D);
	CPoint3D* getEnd();
protected:
	CPoint3D m_Begin;
	CPoint3D m_End;
	
	CPoint3D				m_center;		//center of mass: the object's center
	CFactor3D				m_scale;		//the scale of the object
	CQuaternion				m_rotObject;

public:
	bool selected; // whether the object is chosen or not?
	int rotateX;
	int rotateY;
	int rotateZ;
};
